home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / lisp / elk-2_0.lha / elk-2.0 / lib / misc / chdir.c < prev    next >
C/C++ Source or Header  |  1992-10-23  |  633b  |  33 lines

  1. #include <errno.h>
  2.  
  3. #include "scheme.h"
  4.  
  5. extern int errno;
  6. extern char *getenv();
  7.  
  8. Object V_Home;
  9.  
  10. static Object P_Chdir (argc, argv) Object *argv; {
  11.     Object dir;
  12.     register char *s;
  13.     Declare_C_Strings;
  14.  
  15.     dir = argc == 0 ? Var_Get (V_Home) : argv[0];
  16.     Make_C_String (dir, s);
  17.     if (chdir (s) < 0) {
  18.     Saved_Errno = errno;
  19.     Primitive_Error ("~s: ~E", dir);
  20.     }
  21.     Dispose_C_Strings;
  22.     return Void;
  23. }
  24.  
  25. init_lib_chdir () {
  26.     register char *p = getenv ("HOME");
  27.  
  28.     if (p == 0)
  29.     p = ".";
  30.     Define_Variable (&V_Home, "home", Make_String (p, strlen (p)));
  31.     Define_Primitive (P_Chdir, "chdir", 0, 1, VARARGS);
  32. }
  33.